首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Java架构师必看

    冒泡排序Bubble Sort

    文章目录 算法描述 动图演示 代码实现 算法分析 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。 走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述 比较相邻的元素。 如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数; 针对所有的元素重复以上的步骤,除了最后一个; 重复步骤1~3,直到排序完成 代码实现 下面的排序算法统一使用的测试代码如下,源码GitHub链接 public static void main(String[] args) { int[] array = {3, 44, 只需要修改成对应的方法名就可以了 bubbleSort(array); System.out.println(Arrays.toString(array)); } /** * Description:冒泡排序

    54820发布于 2021-07-13
  • 来自专栏深入理解Java

    冒泡排序算法(Bubble Sort

    冒泡排序算法基本思想和案例】 冒泡排序:          对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组的前面,把大的元素移动到          数组的后面(也就是交换两个元素的位置 案例:          初始数组资源【63    4    24    1    3    15】 算法主要代码: // 定义方法实现数组的冒泡排序算法 public static void bubbleSort 】 * 冒泡排序: * 对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组的前面,把大的元素移动到 * 数组的后面(也就是交换两个元素的位置),这样数组元素就像气泡一样从底部上升到顶部。 { public static void main(String[] args) { int[] array = {63, 4, 24, 1, 3, 15}; System.out.println("排序前 :"); for (int i : array) { System.out.print(i + "\t"); } } // 定义方法实现数组的冒泡排序算法 public static void bubbleSort

    80620发布于 2020-04-03
  • 来自专栏专注研发

    交换排序冒泡排序Bubble Sort

    即:每当两相邻的数比较后发现它们的排序排序要求相反时,就将它们互换。 冒泡排序的示例: ? 对冒泡排序常见的改进方法是加入一标志性变量exchange,用于标志某一趟排序过程中是否有数据交换,如果进行某一趟排序时并没有进行数据交换,则说明数据已经按要求排列好,可立即结束排序,避免不必要的比较过程 改进后算法如下: void Bubble_1 ( int r[], int n) { int i= n -1; //初始时,最后位置保持不变 while ( i> 0) { int pos= } } 2.传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值,我们考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) , 从而使排序趟数几乎减少了一半 改进后的算法实现为: void Bubble_2 ( int r[], int n){ int low = 0; int high= n -1; //设置变量的初始值 int tmp,j; while

    1.1K20发布于 2018-09-21
  • 来自专栏一个会写诗的程序员的博客

    1.冒泡排序Bubble Sort

    算法简介 冒泡排序Bubble Sort),是一种计算机科学领域的较简单的排序算法。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。 算法原理 冒泡排序算法的原理是: 重复地走访过要排序的元素列,一次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 排序的过程就是增加有序度减少逆序度的过程,直到达到满有序度,排序完成。 冒泡排序时间复杂度分析 冒泡排序包含2个操作原子,比较和交换。每交换一次,有序度加1。 对包含n个数据的数组进行冒泡排序,最坏情况下初始状态有序度是0,需要进行n(n-1)/2次交换。最好情况下,初始状态有序度是n(n-1)/2,无需进行交换。

    1.3K10发布于 2020-03-20
  • 来自专栏learn

    冒泡排序算法(Bubble Sort)—经典排序算法

    冒泡排序的思想就是在每次遍历一遍未排序的数列之后,将一个数据元素浮上去(也就是排好了一个数据)。 特点及性能 通过冒泡排序的算法思想,我们发现冒泡排序算法在每轮排序中会使一个元素排到一端,也就是最终需要 n-1 轮这样的排序(n 为待排序的数列的长度),而在每轮排序中都需要对相邻的两个元素进行比较, 冒泡排序算法的时间复杂度其实比较高。 针对特定数据集进行优化:例如,对于大部分已经有序或基本有序的数据集,冒泡排序算法的效率较高。可以通过判断数据集的有序程度,选择是否采用冒泡排序。 为了提高冒泡排序算法的效率,可以采用一些优化策略,如设置标志位、减少比较次数和针对特定数据集进行优化。这些优化方法可以显著提高冒泡排序算法的性能。

    67710编辑于 2024-11-19
  • 来自专栏常用算法专栏

    常用的排序算法之冒泡排序Bubble Sort

    冒泡排序Bubble Sort) 原理 冒泡排序Bubble Sort)是一种简单的排序算法,其名字来源于越小的元素会经由交换慢慢“浮”到数列的顶端(或越大的元素“沉”到底端),就如同气泡从水底冒到水面一样 定义 冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 扩展应用 冒泡排序的思想不仅仅局限于数组的排序,也可以应用于其他可比较元素的序列,如链表等。 在数据已经基本有序的情况下,冒泡排序的时间复杂度接近O(n)。 缺点: 时间复杂度较高,平均时间复杂度为O(n^2)。 空间复杂度为O(1),属于原地排序算法,但需要多次交换操作。 使用场景 冒泡排序通常用于数据量较小且对时间效率要求不高的场景。

    53010编辑于 2025-04-05
  • 来自专栏常用算法专栏

    排序算法:冒泡排序(Bubble Sort)、选择排序(Selection Sort)、插入排序(Insertion Sort)、希尔排序(Shell Sort

    一、冒泡排序(BubbleSort)1.核心思想通过重复遍历待排序数组,比较相邻元素,若顺序错误就交换。每一轮将最大(或最小)元素“冒泡”到末尾。 2.算法步骤在未排序序列中找到最小元素;将其与未排序部分的第一个元素交换;重复此过程,直到所有元素排序完成。 ,代码简洁适合中等规模数据(n<10,000)五、对比总结表算法最好时间平均时间最坏时间稳定性交换次数适用场景冒泡排序O(n)O(n²)O(n²)✅多教学、极小数据选择排序O(n²)O(n²)O(n²) ❌少(≤n)写操作昂贵、小数据插入排序O(n)O(n²)O(n²)✅中小数据、近似有序希尔排序O(nlogn)O(n^1.3~1.5)O(n²)❌中中等规模、快速实现、无递归六、实际建议不要在生产环境使用冒泡 /选择排序(效率太低);插入排序常用于:快速排序的“小数组优化”(当子数组长度<10时切换为插入排序);在线算法(数据流式到达);希尔排序是早期高效排序代表,虽被快排/归并取代,但在嵌入式或无递归环境中仍有价值

    6520编辑于 2026-04-19
  • 来自专栏个人随笔

    房上的猫:经典排序算法 - 冒泡排序Bubble sort

    原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,以此类推 例子为从小到大排序 , 原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 | 第一趟排序(外循环) 第一次两两比较6 > 2交换(内循环) 交换前状态| 6 | 2 | 4 | 1 | 5 | 9 | 交换后状态 | 5 | 6 | 9 | 第五次两两比较,6 < 9不交换 交换前状态| 2 | 4 | 1 | 5 | 6 | 9 | 交换后状态| 2 | 4 | 1 | 5 | 6 | 9 | 第二趟排序 | 5 | 6 | 9 | 第四次两两比较,5 < 6不交换 交换前状态| 2 | 1 | 4 | 5 | 6 | 9 | 交换后状态| 2 | 1 | 4 | 5 | 6 | 9 | 第三趟排序 (外循环)无交换 第五趟排序(外循环)无交换 排序完毕,输出最终结果1 2 4 5 6 9 动态图演示: ?

    967100发布于 2018-03-14
  • 冒泡排序Bubble Sort)详细教程:Java实现与优化

    一、什么是冒泡排序冒泡排序Bubble Sort)是一种简单的排序算法,它的基本思想是通过两两比较相邻元素,将较大的元素“冒泡”到数列的末尾。 重复上述过程,直到整个数列有序 二、冒泡排序的工作原理 假设有一个数组 [64, 34, 25, 12, 22, 11],我们使用冒泡排序对其进行排序。 三、Java实现冒泡排序 下面是冒泡排序的 Java 代码实现: public class BubbleSort { // 冒泡排序算法 public static void bubbleSort :"); printArray(arr); } } 四、冒泡排序的优化 虽然冒泡排序简单易懂,但它在效率上不够理想,尤其在数组较大时,性能表现较差。 空间复杂度: 冒泡排序是一种原地排序算法,因此其空间复杂度为 O(1)O(1)O(1)。 六、总结 冒泡排序是一种简单易懂的排序算法,适用于小规模数据的排序

    38610编辑于 2026-01-21
  • 来自专栏总栏目

    Bubble Sort

    Question Write a program of the Bubble Sort algorithm which sorts a sequence A in ascending order. 1 Sample Output 1 1 2 3 4 5 8 Sample Input 2 6 5 2 4 6 1 3 Sample Output 2 1 2 3 4 5 6 9 Meaning 实现冒泡排序的过程 n); cout << endl << sum <<endl; } #endif 废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 转载请注明原文链接:Bubble Sort

    62310编辑于 2022-09-05
  • 来自专栏java大数据

    javascript当中冒泡(event bubble)用法

    9.冒泡(event bubble) 缺省情况下,当几个元素重合,事件从最上层元素开始往下层元素传播。 docClick; </script>

    ie和FF都冒泡从里往外 例 9.2(bubble1currentTargetsrcElementIEFF.html) <html> <head> <meta http-equiv="content-type" content

    75650发布于 2019-10-30
  • 来自专栏编程微刊

    JS数组排序技巧汇总(冒泡sort、快速、希尔等排序)

    分享给大家供大家参考,具体如下: 1、冒泡排序 var temp = 0; for (var i = 0; i < array.length; i++) { for (var j = 0; j < array.length show(nums);//0 0 2 3 4 5 5 6 8 9 效果如图: 图片.png 5、插入排序 function sort(elements){ //假设第 100; arrDemo.sort(); //调用sort方法后,数组本身会被改变,即影响原数组 alert(arrDemo);//10,100,50,51 默认情况下sort方法是按ascii字母顺序排序的 ,而非我们认为是按数字大小排序 arrDemo.sort(function(a,b){return a>b? 1:-1});//从小到大排序 alert(arrDemo);//10,50,51,100 arrDemo.sort(function(a,b){return a<b?

    52800编辑于 2025-05-18
  • 来自专栏深度学习

    【数据结构实验】排序(一)冒泡排序改进算法 Bubble及其性能分析

    冒泡排序是最简单直观的排序算法之一,其核心思想是通过反复交换相邻元素,将未按次序排列的元素移到正确位置。   本文将着重介绍改进的冒泡排序算法,探讨其原理、实现细节以及在不同情境下的性能表现。 冒泡排序算法原理 2.1 传统冒泡排序 冒泡排序的基本思想是通过反复比较相邻的两个元素,并将较大的元素交换到右侧,逐步将最大的元素移到最右端。 这个过程类似于气泡上浮,因此得名冒泡排序,其ADL语言表示如下: 2.2 改进的冒泡排序   改进的冒泡排序在传统冒泡排序的基础上,通过记录每一趟排序中最后一次交换的位置,减少了比较的次数。 实验内容 3.1 实验题目   实现冒泡排序改进算法 Bubble. (R,20); for(i=0;i<20;i++) printf("%d ",R[i]); return 0; } Bubble函数 变量bound ,用于控制每一轮冒泡排序的边界,初始化为数组的大小

    40010编辑于 2024-07-30
  • 来自专栏编程微刊

    JS数组排序技巧汇总(冒泡sort、快速、希尔等排序)

    分享给大家供大家参考,具体如下: 1、冒泡排序 var temp = 0; for (var i = 0; i < array.length; i++) { for (var j = 0; j < array.length 图片.png 2、sort排序 var arrSimple=new Array(1,8,7,6,2,5); arrSimple.sort(); // document.writeln 图片.png 5、插入排序 function sort(elements){ //假设第0个元素是一个有序的数列,第1个以后的是无序的序列, //所以从第1个元素开始将无序数列的元素插入到有序数列中 默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序 arrDemo.sort(function(a,b){return a>b? 1:-1});//从小到大排序 alert(arrDemo);//10,50,51,100 arrDemo.sort(function(a,b){return a<b?

    3.2K30发布于 2018-06-05
  • 来自专栏常用算法专栏

    【数据结构面试】冒泡排序Bubble Sort)Java实现(2026最新):时间复杂度、空间复杂度与稳定性全解析

    序言:为何要重学“过时”的冒泡排序?在快速排序、归并排序等高效算法大行其道的今天,学习时间复杂度为O(n²)的冒泡排序是否还有意义?答案是肯定的。 正如学习绘画需从素描开始,学习算法亦应从冒泡排序启程。第一章:历史溯源——气泡上浮的灵感冒泡排序(BubbleSort)的历史可追溯至1956年的计算机科学早期文献。 空间复杂度:冒泡排序仅使用了常数个额外的变量(如用于交换的临时变量和循环计数器),因此其空间复杂度为O(1),是一种原地排序算法。稳定性:冒泡排序是稳定的。 第三章:数据推演——一步步看清“冒泡”过程让我们以一个具体的数组[5,1,4,2,8]为例,手动执行冒泡排序(升序),并记录每一步的状态。 对性能有要求的生产环境:在任何需要高效处理数据的实际应用中,都应选择快速排序、归并排序或内置的Arrays.sort()(通常是TimSort)。

    9810编辑于 2026-04-18
  • 来自专栏Java帮帮-微信公众号-技术文章全总结

    数据结构基础(1) --Swap ; Bubble-Sort ; Select-Sort

    = tmp; } } 小结: 虽然我们自己实现了swap,但我们还是比较推荐使用C++ STL已经实现好的std::swap()函数,其存在于命名空间std中,使用实例如下面的<冒泡排序 冒泡排序(Bubble-Sort) 算法思想: 从左到右扫描数据,找出最大的元素,将其放到数组右边; 过程: 循环比较相邻的两个数,如果左边的数比右边的大,则交换两个数; //实现:注意代码中的三个注意点 (Select-Sort) 思想: 从当前尚未排序的序列中选择一个最小的元素, 将之放到已排序的序列的队列的末尾; 要点: 1.注意三个指针(inner, outer, miner)所代表的含义; selectSort(Type *array, int length) { return selectSort(array, array+length); } 小结: 虽然我们自己实现了Bubble-Sort 和Select-Sort,但我们在实际软件开发中一般是不会用到的,因为的它的效率为O(N^2),效率太慢^_^, 因此我们还是推荐使用C++ STL中已经实现了的std::sort(), 其内部原理使用了快速排序

    83280发布于 2018-03-19
  • 来自专栏全栈程序员必看

    pythonwhile冒泡排序_python冒泡排序

    # 冒泡排序 ListBubbleSort.py fish_records = [18,8,7,2,3,6,1,1] # 原始排序 i=0 # 循环控制变量 compare=0 # 比较元素初始值 把小的元素放在前面 fish_records[j]=compare # 把临时变量里的大元素放到后面 j+=1 # 内循环控制变量加1 i+=1 # 外循环控制变量加 print(fish_records) # 打印冒泡排序结果

    1.3K10编辑于 2022-11-03
  • 来自专栏Cell的前端专栏

    sort 排序

    sort 使用#include<algorithm>头文件, sort(开始地址,结束地址,排序方式),其中第三参数可以没有,则默认为升序排序。 10 11 typedef struct node { int a; int b; double c; }note; 有一个 node 类型的数组 node arr[100],想对它进行排序 =y.b) return x.b>y.b; return x.c>y.c; } sort() 函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组,数组类型可以是 int,char return a.b>b.b; return a.a<b.a; } int main(){ date a[3]={{5,56.5},{4,56.5},{8,85}}; sort

    1.6K30编辑于 2022-02-24
  • 来自专栏若尘的技术专栏

    排序——冒泡排序

    冒泡排序 比较相领的元素 - 如果第一个比第二个大(升序),就交换他们两个。 - 对每一个相领元素作同样的工作,从开始第一对到结尾的最后一对。 - 这步做完后,最后的元素会是最大的数。 > n; cout << "请输入数组元素:"; for (int i = 0; i < n; i++) cin >> a[i]; // 输入数组a f(a, n); cout << "排序后的元素为 复杂度计算 - 最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。) - 最坏时间复杂度:O(n^2) - 稳定性:稳定 ************ python代码实现 '''冒泡排序-BubbleSort''' def bubble_sort(alist): for alist[i] > alist[i+1]: alist[i], alist[i+1] = alist[i+1], alist[i] l = [54, 45, 32, 34, 56, 90] bubble_sort

    1.5K85发布于 2021-06-29
  • 来自专栏全栈程序员必看

    java冒泡排序代码_Java冒泡排序

    一、冒泡排序: 利用冒泡排序对数组进行排序 二、基本概念: 依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。 为了充分利用这一信息,可以在一趟全局扫描中,对每一反序数据对进行局部冒泡排序处理,称之为局部冒泡排序。 局部冒泡排序冒泡排序算法具有相同的时间复杂度,并且在正序和逆序的情况下,所需的关键字的比较次数和移动次数完全相同。 由于局部冒泡排序冒泡排序的数据移动次数总是相同的,而局部冒泡排序所需关键字的比较次数常少于冒泡排序,这意味着局部冒泡排序很可能在平均比较次数上对冒泡排序有所改进,当比较次数较少的优点不足以抵消其程序复杂度所带来的额外开销 ,而当数据量较大时,局部冒泡排序的时间性能则明显优于冒泡排序

    2.4K61编辑于 2022-09-15
领券